1. Field of the Invention
The present invention relates generally to the data processing field, and more particularly, to communication between a host computer and an input/output (I/O) Adapter through an I/O fabric, wherein the I/O fabric is attached to more than one root node and wherein each root can potentially share with other roots the I/O adapter (IOA). The invention pertains to a method and related apparatus for routing PCI transaction packets between multiple hosts and adapters, through a PCI switched-fabric bus using a destination identifier.
2. Description of the Related Art
PCI (Peripheral Component Interconnect) Express is widely used in computer systems to interconnect host units to adapters or other components, by means of a PCI switched-fabric bus or the like. However, currently, PCI Express does not permit sharing of PCI adapters in topologies where there are Multiple Hosts with Multiple Shared PCI busses. Support for this type of function can be very valuable on blade clusters and on other clustered servers. Currently, PCI Express and secondary network (e.g. FC, IB, Enet) adapters are integrated into blades and server systems, and cannot be shared between clustered blades or even between multiple roots within a clustered system. For blade environments, it can be very costly to dedicate these network adapters to each blade. For example, the current cost of a 10 Gigabit Ethernet adapter is in the $6000 range. The inability to share these expensive adapters between blades has contributed to the slow adoption rate of some new network technologies (e.g. 10 Gigabit Ethernet). In addition, there is a constraint in space available in blades for PCI adapters.
In order to allow virtualization of PCI adapters in the above environment, a mechanism is required for routing memory mapped I/O (MMIO) packets from a host to an adapter, and also for routing direct memory access (DMA) packets from an adapter to a selected host. The mechanism must be designed so that it protects memory and data in the system image of one host from being accessed by unauthorized applications in system images of other hosts.
It would, accordingly, be desirable to provide an address routing mechanism for a distributed computing system, for example, a distributed computing system that uses PCI Express protocol to communicate over an I/O fabric, and that enables each host that attaches to PCI switches and shares a set of common PCI devices to have it's own PCI 64-bit address space.